home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************/
- /* */
- /* PGP für GoldEd 0.98 - Arexx Script */
- /* */
- /* */
- /* ´GoldED 0.98´ - © Ditmar Eilert */
- /* */
- /* ´rexxreqtools.library´ © Nico François */
- /* */
- /* */
- /* Autor: Lunz O. Wolfgang (Luwo) */
- /* <W.LUNZ@link-ba.cl.sub.de> */
- /* */
- /* Hinweis: ´MERGE´en des PGP.men an das für Textverarbeitung */
- /* verwendete GoldEd-Menü! */
- /* & diesen Script in das 'REXX:'-Verzeichnis kopieren */
- /* */
- /* */
- /* $VER: PGP-GoldEd-Script V0.91 ©Luwo (29.04.1994) */
- /* */
- /*********************************************************************/
-
-
-
- ADDRESS COMMAND 'STACK 12000' /* PGP ist ziemlich hungrig :) */
-
- lib = 'rexxreqtools.library'
- if ~show('l',lib) then call addlib(lib,0,-30,0)
-
-
-
- OPTIONS RESULTS /* enable return codes */
-
- if (LEFT(ADDRESS(), 6) ~= "GOLDED") then /* not started by GoldEd ?*/
- ADDRESS 'GOLDED.1'
-
- 'LOCK CURRENT' /* lock GUI, gain access */
- OPTIONS FAILAT 6 /* ignore warnings */
- SIGNAL ON SYNTAX /* ensure clean exit */
- SIGNAL ON ERROR /* trap errors */
-
-
- USERFILE = 'T:PGP_userIDs.tmp' /* einige Standard-Variablen*/
- UserPath = 'T:Users'
- IDstring = '0x'
- NL = '0a'x
- CLRSCR = '0c'x
- PGP = SEARCHPATH() /* den Pfad aus der PGPPATH-Variablen lesen*/
-
-
- 'QUERY DOC VAR DEFAULTFILENAME' /* wurde die Blockmarkierung */
- 'QUERY MARKED VAR BLOCKMARKIERUNG' /* aktiviert? */
- ORGFILENAME=DEFAULTFILENAME
-
- IF BLOCKMARKIERUNG="TRUE" then ORGFILENAME=DEFAULTFILENAME'.block'
-
-
-
- /* --------- Begin der Verzweigungsroutine ------------------------- */
-
-
-
- IF ARG(1)="READ_PGP" then READ_PGP() /* SubProg, je nach Parameter */
- IF ARG(1)="WRITE_PGP" then WRITE_PGP()
- IF ARG(1)="ENCODE_normal" then ENCODE_normal()
- IF ARG(1)="DECODE_normal" then DECODE_normal()
- IF ARG(1)="UNTERSCHREIBEN" then UNTERSCHREIBEN()
- IF ARG(1)="KEY_aufnehmen" then KEY_aufnehmen()
- IF ARG(1)="KEY_ansehen" then KEY_ansehen()
- IF ARG(1)="KEY_editieren" then KEY_editieren()
- IF ARG(1)="KEY_entfernen" then KEY_entfernen()
- IF ARG(1)="KEY_beglaubigen" then KEY_beglaubigen()
- IF ARG(1)="KEY_anhaengen" then KEY_anhaengen()
- IF ARG(1)="KEY_generieren" then KEY_generieren()
-
-
- /* Kein verfügbarer Parameter ! */
-
-
- ADDRESS "GOLDED.1"
- 'REQUEST BODY "PGP-Script-Fehler!" BUTTON "Mist!"'
- REALLYQUIT()
-
- /*----------- Ende der Verzweigungsroutine --------------------------*/
-
- /*-------------------------------------------------------------------*/
- READ_PGP: /* PGP analysiert den Text selbständig */
-
- CALL SAVER()
- ADDRESS COMMAND PGP '+FORCE 'ORGFILENAME' -o'ORGFILENAME
- CALL LOADER()
- REALLYQUIT('k')
- end
- /*-------------------------------------------------------------------*/
-
-
-
- /*-------------------------------------------------------------------*/
- WRITE_PGP: /* Der Text wird für die entsprechenden */
- /* Empfänger codiert... */
- CALL SAVER()
- REQTITEL="Wählen sie die Empfänger.."
- empfaengerliste = GETEMPFAENGER()
- if empfaengerliste ~= '' then
- do
- ADDRESS COMMAND
- PGP '-esta +FORCE 'ORGFILENAME EMPFAENGERLISTE
- 'c:copy >nil: 'ORGFILENAME'.asc 'ORGFILENAME
- 'c:delete >nil: 'ORGFILENAME'.asc'
- end
- CALL LOADER()
- REALLYQUIT()
- end
- /*-------------------------------------------------------------------*/
-
-
- /*-------------------------------------------------------------------*/
- ENCODE_normal: /* Der Text wird mit einem Mantra verschlüsselt */
-
- CALL SAVER()
- ADDRESS COMMAND
- PGP '-cta ' ORGFILENAME
- 'C:copy >nil: 'ORGFILENAME'.asc 'ORGFILENAME
- 'c:delete >nil: 'ORGFILENAME'.asc'
- CALL LOADER() /* 'OPEN AGAIN' */
- REALLYQUIT()
- end
- /*-------------------------------------------------------------------*/
-
-
- /*-------------------------------------------------------------------*/
- DECODE_normal: /* Der Text wird mit einem Mantra entschlüsselt */
-
- CALL SAVER()
- ADDRESS COMMAND
- PGP '-d +FORCE 'ORGFILENAME' -o'ORGFILENAME
- CALL LOADER()
- REALLYQUIT()
- end
- /*-------------------------------------------------------------------*/
-
- /*-------------------------------------------------------------------*/
- UNTERSCHREIBEN: /* Der Text wird mit der persönlichen Signatur */
- /* unterschrieben, und ggfs. komprimiert */
-
- TITXT = 'Text unterschreiben...'
- BTTXT = '_Ja|_Nein'
- BDTXT = 'Wollen sie den Text |auch komprimieren?'
- call ABFRAGE()
- if ergebnis =0 then
- signcmd=' -sat +clearsig=on '
- else
- signcmd=' -sat +clearsig=off '
-
- CALL SAVER()
- ADDRESS COMMAND
- PGP SIGNCMD ORGFILENAME
- 'C:copy >nil: 'ORGFILENAME'.asc 'ORGFILENAME
- 'c:delete >nil: 'ORGFILENAME'.asc'
- CALL LOADER()
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
- /*--------------------------------------------------------------------*/
- KEY_aufnehmen:
- CALL SAVER()
- ADDRESS COMMAND
- PGP '-ka '|| ORGFILENAME
- 'c:delete >nil: 'USERFILE
- CALL LOADER()
- REALLYQUIT('key')
- end
- /*--------------------------------------------------------------------*/
-
- /*--------------------------------------------------------------------*/
- KEY_ansehen:
- REQTITEL="Welchen Key ansehen?..."
- empfaengerliste = GETEMPFAENGER()
- if empfaengerliste ~= '' then
- do
- ADDRESS COMMAND
- PGP '-kvvc '|| empfaengerliste
- REALLYQUIT('key')
- end
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
-
- /*--------------------------------------------------------------------*/
- KEY_editieren:
- REQTITEL="Welchen Key editieren?..."
- empfaengerliste = GETEMPFAENGER()
- if empfaengerliste ~= '' then
- do
- ADDRESS COMMAND
- PGP '-ke '|| empfaengerliste
- REALLYQUIT('key')
- end
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
-
- /*--------------------------------------------------------------------*/
- KEY_entfernen:
- REQTITEL="Welchen Key entfernen?..."
- empfaengerliste = GETEMPFAENGER()
- if empfaengerliste ~= '' then
- do
- ADDRESS 'GOLDED.1'
- TITXT = 'Public-keys entfernen?'
- BTTXT = '_Nein|_Ja'
- BDTXT = namensliste
- call ABFRAGE()
- if ergebnis =0 then
- do
- ADDRESS COMMAND
- PGP '-kr ' empfaengerliste
- 'c:delete >nil: 'USERFILE' T:users ALL'
- REALLYQUIT('key')
- end
- end
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
-
- /*--------------------------------------------------------------------*/
- KEY_beglaubigen:
- REQTITEL="Welchen Key beglaubigen?..."
- empfaengerliste = GETEMPFAENGER()
- if empfaengerliste ~= '' then
- do
- ADDRESS COMMAND
- PGP '-ks '|| empfaengerliste
- REALLYQUIT('key')
- end
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
-
- /*--------------------------------------------------------------------*/
- KEY_anhaengen:
-
- RADIXcmd='INSERT'
- REQTITEL="RADIX-64-Key einfügen..."
-
- empfaengerliste = GETEMPFAENGER()
- if empfaengerliste ~= '' then
- do
- do i = 1 to words(empfaengerliste)
- ADDRESS COMMAND
- PGP '-fkxa 'word(empfaengerliste,i) ' >t:PGPextract.tmp'i
- end
-
- ADDRESS 'GOLDED.1'
- 'QUERY ABSLINE VAR LIN'
- 'QUERY COLUMN VAR COL'
- 'REQUEST BODY="Wo wollen Sie den(die)| RADIX-64 (ASCII) |PublicKey(s) einfügen?"
- TITLE=" Radix-64 Public-Key insert:"
- BUTTON="_Cursor|Text_ende|_Vergiß es!" VAR ERGEBNIS'
-
- if ERGEBNIS = 2 then RADIXcmd='APPEND'
-
- if ERGEBNIS ~= 0 then
- do i = 1 to words(empfaengerliste)
- 'OPEN 'RADIXcmd' T:PGPextract.tmp'i
- 'SAVE ALL'
- end
-
- GOTO LINE LIN COLUMN COL
- address command 'c:delete >nil: t:PGPextract.tmp#?'
-
- end
-
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
-
- /*--------------------------------------------------------------------*/
- KEY_generieren:
- TITXT = 'Secret-key generieren?'
- BTTXT = '_Nein|_Ja'
- BDTXT = ' Wollen Sie tatsächlich | einen geheimen Schlüssel | generieren?'
- call ABFRAGE()
- if ergebnis =0 then
- do
- ADDRESS COMMAND
- PGP '-kg '
- 'c:delete >nil: 'USERFILE
- REALLYQUIT('key')
- end
- REALLYQUIT()
- end
- /*--------------------------------------------------------------------*/
-
-
-
- /* ---------------- Auswahl der Empfaenger--------------------------- */
- GETEMPFAENGER:
-
- ADDRESS COMMAND
- drop empfaengerliste
- PGPcmd = ''
- namensliste= ''
-
- /* ist der T:user-Path schon da? */
- if ~EXISTS(UserPath) then 'C:makedir ' USERPATH
-
- /* sind die UserIds schon extrahiert? */
- if ~EXISTS(USERFILE) then call MAKEUSERLISTE()
-
- call rtfilerequest("T:Users/", , REQTITEL, ,"rtfi_flags=freqf_multiselect rt_pubscrname=GOLDED.1",empfaenger)
-
- if empfaenger == 1 then
- do
- do i=1 to empfaenger.count
- call Open('USID',empfaenger.i,"R")
- dummy = readch('USID',8)
- call Close('USID')
-
- if left(dummy,2)="0x" then
- do
- PGPcmd=PGPcmd dummy
- namensliste =namensliste right(empfaenger.i,length(empfaenger.i)-8) '|'
- end
- end
- end
-
- call rtfreefilebuffer()
- return PGPcmd
- /*--------------------------------------------------------------------*/
-
-
- /* Erstellen der aus der pubring.key-datei extrahierten User Ids */
- MAKEUSERLISTE:
- ADDRESS COMMAND PGP ' -kv >'USERFILE
- call Open('UFID',USERFILE,'R')
- do until EOF('UFID')=1
- dummy = READLN('UFID')
-
- if (UPPER(LEFT(dummy,3))="PUB")&(word(dummy,4)~='***') then
-
- do
- keyid = right(word(dummy,2),6)
- namestart= wordindex(dummy,4)
- nameend= pos('<',dummy)
- if nameend=0 then nameend=LENGTH(dummy)+2
- namelength=nameend-namestart-1
- name=substr(dummy,namestart,namelength)
- name=compress(name,':;/><')
-
- call Open('currentUser',UserPath'/'name,'W')
- call Writech('currentUser',IDSTRING||KEYID)
- call Close('currentUser')
-
- end
-
- end
- call Close('UFID')
- say Clrscr
- return
- /*--------------------------------------------------------------------*/
-
-
- /* ------------------- diverse Unterprogramme ----------------------- */
-
- SAVER: /* Speichert, je nachdem, ob die Blockmarkierung */
- /* aktiviert wurde oder nicht, den ganzen Text, */
- /* oder nur einen Ausschnitt daraus ab... */
- ADDRESS "GOLDED.1"
- if BLOCKMARKIERUNG="FALSE" then
- do
- 'SAVE ALL'
- return 0
- end
-
- if BLOCKMARKIERUNG="TRUE" then
- do
- SAVE BLOCK NAME ORGFILENAME
- return 0
- end
- end
-
- /*--------------------------------------------------------------------*/
- LOADER: /* Lädt, je nachdem, ob die Blockmarkierung aktiviert */
- /* wurde oder nicht, den ganzen Text, oder auch nur */
- /* einen Block wieder ein... */
-
- ADDRESS "GOLDED.1"
- if BLOCKMARKIERUNG="FALSE" then
- do
- 'OPEN AGAIN'
- return 0
- end
-
- if BLOCKMARKIERUNG="TRUE" then
- do
- DELETE BLOCK
- OPEN INSERT NAME ORGFILENAME
- ADDRESS COMMAND 'c:delete >nil: 'ORGFILENAME
- return 0
- end
- end
-
-
- /*--------------------------------------------------------------------*/
- SEARCHPATH:
-
- ADDRESS COMMAND
- if exists('env:PGPPATH') then
- do
- call Open('binpath','ENV:PGPPATH','R')
- dummy=readln('binpath')
- call Close('binpath')
- dummy='PGP="'dummy||'/bin/pgp"'
- interpret dummy
- end
-
- else
- do
- ADDRESS "GOLDED.1"
- TITXT = 'PGP-AREXX-INTERNAL-ERROR'
- BTTXT = '_OKIDOKI'
- BDTXT = "Die PGPPATH-Variable ist nicht gesetzt!| Bitte deklarieren sie diese ! | Vorläufig wird 'C:PGP' verwendet "
- call ABFRAGE()
- return 'c:pgp'
- end
-
- ADDRESS COMMAND
- return PGP
- end
-
-
- /*--------------------------------------------------------------------*/
- ABFRAGE: /* Erstellt einen Requester... */
-
- ADDRESS "GOLDED.1"
- 'REQUEST TITLE="'TITXT'" BODY="'BDTXT'" BUTTON="'BTTXT'" VAR ERGEBNIS'
- return 0
- end
-
-
- /*--------------------------------------------------------------------*/
- REALLYQUIT:
- ADDRESS "GOLDED.1"
- arg QUITTER
-
- if QUITTER~=''then
- do
- say NL 'Bitte "Return" um weiterzumachen'
- pull QUITTER
- end
- 'NAME 'DEFAULTFILENAME
- 'UNLOCK' /* Sehr wichtig: unlock GUI */
- EXIT
-
- /*--------------------------------------------------------------------*/
- ERROR:
- say NL 'Ein Fehler ('RC') ist in Zeile:'SIGL' aufgetreten :~('
- say '-=> [Press return]'
- pull QUITTER
-
- ADDRESS "GOLDED.1"
- 'NAME 'DEFAULTFILENAME
- 'UNLOCK'
- EXIT
-
-
- /*--------------------------------------------------------------------*/
- SYNTAX:
- ADDRESS "GOLDED.1"
- SAY "Sorry, Syntax-error line" SIGL ":" ERRORTEXT(RC) ":-("
- 'UNLOCK'
- /*--------------------------------------------------------------------*/
-
-